1. Field of the Invention
The present invention is directed to a system for allowing two-handed user control of a graphical object and a view into a scene and, more particularly, to a system for inputting viewpoint change information and graphical object change information, dynamically changing an input-to-object mapping responsive to the viewpoint change information, and moving the graphical object responsive to the graphical object change information and the dynamically changed mapping where a screen cursor disappears while the object is being moved and is maintained on the screen wherever the object moves.
2. Description of the Related Art
Typically, an input device, such as a mouse or stylus, controls a graphical object in a three-dimensional (3D) system, such as an animation software package, via some input-to-object mapping M, such as a mapping that maps motions of a mouse proportionally to motions of a cursor on a display screen. In conventional one-handed interface systems, such as where a mouse is used to control the cursor and also used to control a view or viewpoint of a 3D scene, the input device 2 controls 4 the object through the mapping 6, or controls 8 the view as depicted in FIG. 1. Thus, when the object is being manipulated, the view is static, and the input-object mapping (M) is static. That is, object control and viewpoint control are not integrated.
Systems where users manipulate two input devices while interacting with a computer system are becoming more common, such as when a graphic model designer of an object, such as an automobile, uses a stylus in one hand to draw lines of a three-dimensional (3D) model while the other hand manipulates a mouse to change the view or viewpoint of the 3D scene.
A camera control metaphor is used in such situations to discuss the change in viewpoint and is often referred to as “tumbling” a virtual camera, and is analogous to holding and manipulating a turntable (represented by the ground plane in the graphics scene) in one's hand. The turntable can be rotated about it's normal axis as well as the horizontal screen axis. Technically, this requires revolving the camera about the center of the scene by varying the azimuth and elevation angles in the perspective view. This allows objects in the middle of the 3D scene to be viewed from any direction. The viewing distance from the object, as well as the view angle (or focal length of the camera) is kept constant. This camera control metaphor is ideal when the object(s) of interest are located in the center of the 3D scene. It is one of the most frequently used camera controls in mainstream 3D applications, others such as panning (moving the center of interest), zooming/dolly (moving closer or further away from the center of interest) are important but less frequently used when working on a single object in the scene.
To help understand the present invention, assume that the user is using a two-handed interaction technique where the left (non-dominant) hand device controls the user's view of the scene (tumble, pan, zoom, etc. the virtual camera), while the right hand simultaneously manipulates objects, such as a paint brush (see http://www.dgp.utoronto.ca/people/ravin/papers/chi992hands.pdf or Exploring Bimanual Camera Control and Object Manipulation in 3D Graphics Interfaces, Balakrishnan, et al, pgs. 56-63, Proceedings of 1999 ACM Conference on Human Factors in Computing Systems, Chicago 1999, incorporated by reference herein). A problem that arises in this style of interaction is how to map the right (dominant) hand device's movement to movement of the graphical object being controlled, while the underlying viewpoint is simultaneously changing via motion of the (non-dominant) left hand. The default solution, which happens when in a status-quo graphics system, such as the Alias|Wavefront Maya™, where the camera operations are controlled by the left hand, is that the viewpoint is cached for the duration of the right-hand's manipulator drag operation. As such, if the viewpoint is changed during the drag, the drag operates based on the old, cached, viewpoint and the results are non-obvious to the user.
This is depicted in FIG. 2 where the dominant hand input device 10 acts through the mapping 12 to move 14 the object while the non-dominant hand input device 16 moves the cached view. Using the two handed interaction with the conventional processes, the view could change while the object is being manipulated. However, the input-to-object mapping (M) is not updated to reflect the changing viewpoint. This results in the “wrong” interaction being applied to the object. Again, object movement and viewpoint changes are not integrated.
For example, say the right hand is dragging on a left-right translation manipulator. Left-right movement of the mouse corresponds to left-right movement of the graphical object on the screen. FIG. 3A shows an example of this where a mouse 18 is moved from right to left and a corresponding motion of the graphical widget or pointer 20 also moves from right to left in a computer produced image display 22. Now, if the view is tumbled 180 degrees about the up axis, left-right movement of the mouse will correspond to right-left (i.e., opposite) movement of the graphical object 20 on the screen 22. FIG. 3B shows an example of this where the mouse 18 is moved from right to left and the motion of the pointer 20 moves from left to right in the display of the scene. This is a motion that is opposite to what the user inherently or intuitively expects.
What is needed is a system that coordinates a user's movement of a control device with the motion of an on screen object in a way which is intuitive and as the user would expect.